#include <iostream>
#include <string>
#include <vector>
#include "Car.h"
// #include "Underpan.h"
// #include "AGX.h"
// #include "Camera.h"
// #include "Lidar.h"
// #include "Gyroscope.h"
// #include "Green.h"
// #include "Battery.h"

using namespace std;

// 全局变量，在main文件中声明，在task1文件中赋值
extern vector<Car> cars;

// 完成10台小车的信息录入，并完成编号
void task1()
{

    // 四个轮胎
    vector<Tire> tires;
    for (int i = 0; i < 4; i++)
    {
        Tire tire("麦克纳姆轮", "175"); // 轮胎信息
        tires.push_back(tire);
    }

    // 初始化一个底盘
    Underpan underpan("dp12345678", "SCOUT MINI", 451, 490, 115, 0, "四轮四驱", 10, tires);

    // 初始化一个AGX套件
    AGX agx("AGX Xavier", 32, 512, 64, 32, 32);

    // 初始化一个双目摄像头
    Camera camera("RealSense D435i", "D430", 1920, 1080, 30, 87, 58, 90);

    // 初始化一个多线激光雷达
    Lidar lidar("RS-Helios-16p", 16, 100, 8);

    // 初始化一个9轴陀螺仪
    Gyroscope gyroscope("CH110", "NXP");

    // 初始化一个液晶显示屏
    Green green(11.6, "super");

    // 初始化一个电池模块
    Battery battery("24V", "15Ah", "24V", 2);

    // 录入10台小车的信息
    for (int i = 1; i <= 10; i++)
    {
        string car_id = "cqusn" + to_string(i) + "SMARTCAR"; // 生成小车编号
        Car car(car_id, underpan, agx, camera, lidar, gyroscope, green, battery);
        cars.push_back(car); // 将小车添加到向量中
    }
}

// 打印所有小车信息
void print_car_info()
{
    cout << "任务2——完成录入小车的任务，并打印相关信息：" << endl;
    for (Car &car : cars)
    {
        car.print();
    }
}